#include "../header.h"

//1.主线程给子线程传递数据  第四个参数  数值  字符串 - 结构体 - 全局数据的方式。
//2.主线程创建子线程，如果主线程没有等待的话，子线程有可能没有执行时间。空间释放。

//线程1 
void * pthread_fun1(void * arg)
{
    int num1 = 10;
    while(num1--)
    {
        //每秒钟操作屏幕文件。
        printf("this is %s test :%d :%lu\n",__func__,getpid(),pthread_self());
        sleep(1);
    }
    //线程退出函数  返回2号状态。
    pthread_exit((void*)2);
}
//线程2 
void * pthread_fun2(void * arg)
{   
    int num1 = 5;
    while(num1--)
    {
        printf("this is %s test :%d :%lu\n",__func__,getpid(),pthread_self());
        sleep(1);
    }
    //返回5号状态。
    pthread_exit((void*)5);
}

int main(int argc, char const *argv[])
{
    pthread_t tid1 = 0 ,tid2 = 0 ;
    pthread_create(&tid1,NULL,pthread_fun1,NULL);
    pthread_create(&tid2,NULL,pthread_fun2,NULL);
    //阻塞本线程,等待目标线程执行完。

    //可以接收子线程的退出状态
    void * ret1 = NULL;
    void *ret2 = NULL;
    pthread_join(tid1,&ret1);
    pthread_join(tid2,&ret2);
    printf("pthread fun1 exit status:%lu\n",(long unsigned int)ret1);
    printf("pthread fun2 exit status:%lu\n",(long unsigned int)ret2);

    printf("main over\n");
    return 0;
}
